home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: Alpha / Whiteline Alpha.iso / progtool / c / egem / source / rc_ob_c.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-09-22  |  3.3 KB  |  162 lines

  1.  
  2. #include "e_gem.h"
  3.  
  4. void ob_dostate(OBJECT *tree, int obj, int state)
  5. {
  6.     tree[obj].ob_state |= state;
  7. }
  8.  
  9. void ob_undostate(OBJECT *tree, int obj, int state)
  10. {
  11.     tree[obj].ob_state &= ~state;
  12. }
  13.  
  14. int ob_isstate(OBJECT *tree, int obj, int state)
  15. {
  16.     if (tree[obj].ob_state & state)
  17.         return 1;
  18.     else
  19.         return 0;
  20. }
  21.  
  22. void ob_doflag(OBJECT *tree, int obj, int flag)
  23. {
  24.     tree[obj].ob_flags |= flag;
  25. }
  26.  
  27. void ob_undoflag(OBJECT *tree, int obj, int flag)
  28. {
  29.     tree[obj].ob_flags &= ~flag;
  30. }
  31.  
  32. int ob_isflag(OBJECT *tree, int obj, int flag)
  33. {
  34.     if (tree[obj].ob_flags & flag)
  35.         return 1;
  36.     else
  37.         return 0;
  38. }
  39.  
  40. void ob_xywh(OBJECT *tree, int obj, GRECT *rec)
  41. {
  42.     *rec = *((GRECT *) &tree[obj].ob_x);
  43. }
  44.  
  45. char **typetest(OBJECT *tree, int obj)
  46. {
  47.     OBJECT *t = tree + obj;
  48.     int ot;
  49.  
  50.     switch ((ot = t->ob_type) & 0xff)
  51.     {
  52.     case G_TEXT:
  53.     case G_FTEXT:
  54.     case G_BOXTEXT:
  55.     case G_FBOXTEXT:
  56.         return &(t->ob_spec.tedinfo->te_ptext);
  57.     case G_STRING:
  58.     case G_BUTTON:
  59.     case G_TITLE:
  60.         return &(t->ob_spec.free_string);
  61.     default:
  62.         if ((ot & ~G_MODAL) == ((ATTR_TEXT << 8) | G_USERDEF))    
  63.             return ((char **) &(t->ob_spec.userblk->ub_parm));
  64.         else
  65.             return (NULL);
  66.     }
  67. }
  68.  
  69. char *ob_get_text(OBJECT *tree, int obj, int clear)
  70. {
  71.     char **te;
  72.  
  73.     if (te = typetest(tree, obj)) {
  74.         if (clear)
  75.             **te = '\0';
  76.         return *te;
  77.     } else
  78.         return NULL;
  79. }
  80.  
  81. void ob_set_text(OBJECT *tree, int obj, char *text)
  82. {
  83.     char **te;
  84.  
  85.     if (te = typetest(tree, obj))
  86.         *te = text;
  87. }
  88.  
  89. void ob_draw_dialog(OBJECT *tree,int x,int y,int w,int h)
  90. {
  91.     int tx,ty,tw,th;
  92.  
  93.     form_center(tree,&tx,&ty,&tw,&th);
  94.     form_dial(FMD_START,tx,ty,tw,th,tx,ty,tw,th);
  95.  
  96.     if (x|y|w|h)
  97.         form_dial(FMD_GROW,x,y,w,h,tx,ty,tw,th);
  98.     objc_draw(tree,0,MAX_DEPTH,tx,ty,tw,th);
  99. }
  100.  
  101. void ob_undraw_dialog(OBJECT *tree,int x,int y,int w,int h)
  102. {
  103.     int tx,ty,tw,th;
  104.  
  105.     form_center(tree,&tx,&ty,&tw,&th);
  106.     if (x|y|w|h)
  107.         form_dial(FMD_SHRINK,tx,ty,tw,th,x,y,w,h);
  108.     form_dial(FMD_FINISH,tx,ty,tw,th,tx,ty,tw,th);
  109. }
  110.  
  111. #ifdef __GNUC__
  112. int rc_inside(int x, int y, GRECT *rec)
  113. {
  114.     return (x >= rec->g_x && x < rec->g_x + rec->g_w &&
  115.             y >= rec->g_y && y < rec->g_y + rec->g_h);
  116. }
  117. #endif    /* __GNUC__ */
  118.  
  119. #ifdef LATTICE
  120. void rc_grect_to_array(GRECT *rec,int *pxy)
  121. {
  122.     pxy[0] = rec->g_x;
  123.     pxy[1] = rec->g_y;
  124.     pxy[2] = rec->g_x + rec->g_w - 1;
  125.     pxy[3] = rec->g_y + rec->g_h - 1;
  126. }
  127. #endif    /* LATTICE */
  128.  
  129. void rc_array_to_grect(int *pxy,GRECT *rec)
  130. {
  131.     rec->g_x = pxy[0];
  132.     rec->g_y = pxy[1];
  133.     rec->g_w = pxy[2] - pxy[0] + 1;
  134.     rec->g_h = pxy[3] - pxy[1] + 1;
  135. }
  136.  
  137. int EvntMulti(EVENT *evnt_struct)
  138. {
  139.     return (evnt_struct->ev_mwich = evnt_multi(evnt_struct->ev_mflags,
  140.         evnt_struct->ev_mbclicks,
  141.         evnt_struct->ev_bmask,
  142.         evnt_struct->ev_mbstate,
  143.         evnt_struct->ev_mm1flags,
  144.         evnt_struct->ev_mm1x,
  145.         evnt_struct->ev_mm1y,
  146.         evnt_struct->ev_mm1width,
  147.         evnt_struct->ev_mm1height,
  148.         evnt_struct->ev_mm2flags,
  149.         evnt_struct->ev_mm2x,
  150.         evnt_struct->ev_mm2y,
  151.         evnt_struct->ev_mm2width,
  152.         evnt_struct->ev_mm2height,
  153.         evnt_struct->ev_mmgpbuf,
  154.         ((unsigned long)evnt_struct->ev_mthicount << 16) + evnt_struct->ev_mtlocount,
  155.         &evnt_struct->ev_mmox,
  156.         &evnt_struct->ev_mmoy,
  157.         &evnt_struct->ev_mmobutton,
  158.         &evnt_struct->ev_mmokstate,
  159.         &evnt_struct->ev_mkreturn,
  160.         &evnt_struct->ev_mbreturn));
  161. }
  162.